﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0047)http://validform.rjboy.cn/document.html -->
<!DOCTYPE html><HTML lang="en"><HEAD>
<META charset="utf-8"><TITLE>Document - Validform - 一行代码搞定整站的表单验证！ 
©瑞金佬的前端路</TITLE><LINK rel="stylesheet" type="text/css" href="doc_API_Validform_files/style.css" 
media="all"><LINK rel="stylesheet" type="text/css" href="doc_API_Validform_files/wp-syntax.css">
<LINK rel="stylesheet" type="text/css" href="doc_API_Validform_files/demo.css">
<META name="GENERATOR" content="MSHTML 9.00.8112.16584"></HEAD>
<BODY>
<DIV class="header">
<DIV class="wraper">
<H1><A href="http://validform.rjboy.cn/">Validform</A></H1>
<UL class="nav">
  <LI><A href="http://validform.rjboy.cn/">关于Validform</A></LI>
  <LI><A href="http://validform.rjboy.cn/demo.html">Demo</A></LI>
  <LI><A class="current" 
  href="http://validform.rjboy.cn/document.html">文档</A></LI>
  <LI><A href="http://validform.rjboy.cn/download.html">下载</A></LI>
  <LI><A href="http://validform.rjboy.cn/help.html">帮助</A></LI>
  <LI><A href="http://validform.rjboy.cn/?p=1">网友讨论</A></LI></UL></DIV></DIV>
<DIV class="main">
<DIV class="wraper">
<DIV class="cls document">
<DIV class="content fr">
<DL>
  <DT><A name="getstart">Validform使用入门</A></DT>
  <DD>
  <H3>1、引入css</H3>
  <P>请查看下载文件中的style.css，把里面Validform必须部分复制到你的css中（文件里这个注释 "<SPAN 
  class="green">/*==========以下部分是Validform必须的===========*/</SPAN>" 
  之后的部分是必须的）。之前发现有部分网友把整个style.css都引用在了页面里，然后发现样式冲突了。</P>
  <H3>2、引入js （jquery 1.4.3 以上版本都可以）</H3>
  <DIV class="wp_syntax">
  <TABLE>
    <TBODY>
    <TR>
      <TD class="line_numbers"><PRE>1
2
</PRE></TD>
      <TD class="code"><PRE style="font-family: monospace;" class="javascript"><SPAN style="color: rgb(51, 153, 51);">&lt;</SPAN>script type<SPAN style="color: rgb(51, 153, 51);">=</SPAN><SPAN style="color: rgb(51, 102, 204);">"text/javascript"</SPAN> src<SPAN style="color: rgb(51, 153, 51);">=</SPAN><SPAN style="color: rgb(51, 102, 204);">"http://validform.rjboy.cn/wp-content/themes/validform/js/jquery-1.6.2.min.js"</SPAN><SPAN style="color: rgb(51, 153, 51);">&gt;&lt;/</SPAN>script<SPAN style="color: rgb(51, 153, 51);">&gt;</SPAN>
<SPAN style="color: rgb(51, 153, 51);">&lt;</SPAN>script type<SPAN style="color: rgb(51, 153, 51);">=</SPAN><SPAN style="color: rgb(51, 102, 204);">"text/javascript"</SPAN> src<SPAN style="color: rgb(51, 153, 51);">=</SPAN><SPAN style="color: rgb(51, 102, 204);">"http://validform.rjboy.cn/Validform/v5.1/Validform_v5.1_min.js"</SPAN><SPAN style="color: rgb(51, 153, 51);">&gt;&lt;/</SPAN>script<SPAN style="color: rgb(51, 153, 51);">&gt;</SPAN></PRE></TD></TR></TBODY></TABLE></DIV>
  <H3>3、给需要验证的表单元素绑定附加属性</H3>
  <DIV class="wp_syntax">
  <TABLE>
    <TBODY>
    <TR>
      <TD class="line_numbers"><PRE>1
2
3
</PRE></TD>
      <TD class="code"><PRE style="font-family: monospace;" class="html">&lt;form class="demoform"&gt;
&lt;input type="text" value="" name="name" datatype="s5-16" errormsg="昵称至少5个字符,最多16个字符！" /&gt;
&lt;/form&gt;
</PRE></TD></TR></TBODY></TABLE></DIV>
  <H3>4、初始化，就这么简单</H3>
  <DIV class="wp_syntax">
  <TABLE>
    <TBODY>
    <TR>
      <TD class="line_numbers"><PRE>1</PRE></TD>
      <TD class="code"><PRE style="font-family: monospace;" class="javascript">$<SPAN style="color: rgb(0, 153, 0);">(</SPAN><SPAN style="color: rgb(51, 102, 204);">".demoform"</SPAN><SPAN style="color: rgb(0, 153, 0);">)</SPAN>.<SPAN style="color: rgb(102, 0, 102);">Validform</SPAN><SPAN style="color: rgb(0, 153, 0);">(</SPAN><SPAN style="color: rgb(0, 153, 0);">)</SPAN><SPAN style="color: rgb(51, 153, 51);">;</SPAN></PRE></TD></TR></TBODY></TABLE></DIV>
  <P><STRONG>注：</STRONG><BR>1、Validform有非压缩、压缩和NCR三个版本提供下载，NCR是通用版，当你页面因编码问题，提示文字出现乱码时可以使用这个版本；<BR><SPAN 
  class="red">2、Validform没有限定必须使用table结构，它可以适用于任何结构，需要在tiptype中定义好位置关系。</SPAN></P></DD>
  <DT><A name="bindtype">绑定附加属性</A></DT>
  <DD>
  <P>凡要验证格式的元素均需绑定datatype属性，datatype可选值内置有10类，用来指定不同的验证格式。<BR>                  
        如果还不能满足您的验证需求，可以传入自定义datatype，自定义datatype是一个非常强大的功能，通过它可以满足你的任何需求。</P>
  <P>可以绑定的附加属性有：<STRONG>datatype</STRONG>、<STRONG>nullmsg</STRONG>、<STRONG>sucmsg</STRONG>、<STRONG>errormsg</STRONG>、<STRONG>ignore</STRONG>、<STRONG>recheck</STRONG>、<STRONG>tip</STRONG>、<STRONG>altercss</STRONG>、<STRONG>ajaxurl</STRONG> 
  和 <STRONG>plugin</STRONG> </P>
  <P><STRONG>绑定方法如下所示：</STRONG></P>
  <DIV class="wp_syntax">
  <TABLE>
    <TBODY>
    <TR>
      <TD class="line_numbers"><PRE>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</PRE></TD>
      <TD class="code"><PRE style="font-family: monospace;" class="html">&lt;!--ajax实时验证用户名--&gt;
&lt;input type="text" value="" name="name" datatype="e" ajaxurl="valid.php?myparam1=value1&amp;myparam2=value2" sucmsg="用户名验证通过！" nullmsg="请输入用户名！" errormsg="请用邮箱或手机号码注册！"  /&gt;
&nbsp;
&lt;!--密码--&gt;
&lt;input type="password" value="" name="userpassword" datatype="*6-15" errormsg="密码范围在6~15位之间！" /&gt;
&lt;!--确认密码--&gt;
&lt;input type="password" value="" name="userpassword2" datatype="*" recheck="userpassword" errormsg="您两次输入的账号密码不一致！" /&gt;
&nbsp;
&lt;!--默认提示文字--&gt;
&lt;textarea tip="请在这里输入您的意见。" errormsg="很感谢您花费宝贵时间给我们提供反馈，请填写有效内容！"  datatype="s" altercss="gray" class="gray" name="msg" value=""&gt;请在这里输入您的意见。&lt;/textarea&gt;
&nbsp;
&lt;!--使用swfupload插件--&gt;
&lt;input type="text" plugin="swfupload" class="inputxt" disabled="disabled" value=""&gt;
&lt;input type="hidden" value="" pluginhidden="swfupload"&gt;
&nbsp;
&lt;!--使用passwordStrength插件--&gt;
&lt;input type="password" errormsg="密码至少6个字符,最多18个字符！" datatype="*6-18" plugin="passwordStrength" class="inputxt" name="password" value=""&gt;
&lt;div class="passwordStrength" style="display:none;"&gt;&lt;b&gt;密码强度：&lt;/b&gt; &lt;span&gt;弱&lt;/span&gt;&lt;span&gt;中&lt;/span&gt;&lt;span class="last"&gt;强&lt;/span&gt;&lt;/div&gt;
&nbsp;
&lt;!--使用DatePicker插件--&gt;
&lt;input type="text" plugin="datepicker" class="inputxt" name="birthday" value=""&gt;</PRE></TD></TR></TBODY></TABLE></DIV>
  <H3>说明：</H3>
  <UL class="lireset2">
    <LI><STRONG 
    class="orange">datatype</STRONG><BR><STRONG>内置基本的datatype类型有：</STRONG> * | 
    *6-16 | n | n6-16 | s | s6-18 | p | m | e | url<BR>                          
          
    *：检测是否有输入，可以输入任何字符，不留空即可通过验证；<BR>*6-16：检测是否为6到16位任意字符；<BR>n：数字类型；<BR>n6-16：6到16位数字；<BR>s：字符串类型；<BR>s6-18：6到18位字符串；<BR>p：验证是否为邮政编码；<BR>m：手机号码格式；<BR>e：email格式；<BR>url：验证字符串是否为网址。 
                                                                   
    <DIV class="mt10">自定义datatype的名称，可以由字母、数字、下划线、中划线和*号组成。</DIV>
    <DIV 
    class="mt10">形如"*6-16"的datatype，Validform会自动扩展，可以指定任意的数值范围。如内置基本类型有"*6-16"，那么你绑定datatype="*4-12"就表示4到12位任意字符。如果你自定义了一个datatype="zh2-4"，表示2到4位中文字符，那么datatype="zh2-6"就表示2到6位中文字符。</DIV>
    <DIV 
    class="mt10">5.2版本之后，datatype支持规则累加或单选。用","分隔表示规则累加；用"|"分隔表示规则多选一，即只要符合其中一个规则就可以通过验证，绑定的规则会依次验证，只要验证通过，后面的规则就会忽略不再比较。如绑定datatype="m|e"，表示既可以填写手机号码，也能填写邮箱地址，如果知道填入的是手机号码，那么就不会再检测他是不是邮箱地址；datatype="zh,s2-4"，表示要符合自定义类型"zh"，也要符合规则"s2-4"。</DIV>
    <DIV class="mt10 green"><STRONG>注：</STRONG> 
    <BR>5.2.1版本之后，datatype支持：<BR><STRONG>直接绑定正则</STRONG>：如可用这样写datatype="/\w{3,6}/i"，要求是3到6位的字母，不区分大小写；<BR><STRONG>支持简单的逻辑运算</STRONG>：如datatype="m 
    <SPAN class="orange">|</SPAN> e<SPAN class="orange">,</SPAN> *4-18 <SPAN 
    class="orange">|</SPAN> /\w{3,6}/i <SPAN class="orange">|</SPAN> 
    /^validform\.rjboy\.cn$/"，<BR>这个表达式的意思是：可以是手机号码；或者是邮箱地址，但字符长度必须在4到18位；或者是3到6位的字母，不区分大小写；或者输入validform.rjboy.cn，区分大小写。这里","分隔相当于逻辑运算里的"&amp;&amp;"； 
    "|"分隔相当于逻辑运算里的"||"；不支持括号运算。</DIV></LI>
    <LI><STRONG 
    class="orange">nullmsg</STRONG><BR>当表单元素值为空时的提示信息，不绑定，默认提示"请填入信息！"。<BR>      
                          如：nullmsg="请填写用户名！"<BR><SPAN 
    class="green">5.3版开始，对于没有绑定nullmsg的对象，会自动查找class为Validform_label下的文字作为提示文字:</SPAN><BR>如这样的html结构：<BR>&lt;span 
    class="Validform_label"&gt;*用户名：&lt;/span&gt;&lt;input type="text" val="" 
    datatype="s" 
    /&gt;<BR>当这个文本框里没有输入时的出错信息就会是："请输入用户名！"<BR>这里Validform_label跟input之间的位置关系，不一定是要同级关系，同级里没有找到的话，它还会在同级的子级、父级的同级、父级的同级的子级里查找。 
                               </LI>
    <LI><STRONG class="orange">sucmsg</STRONG> <SUP 
    class="green">5.3+</SUP><BR>当表单元素通过验证时的提示信息，不绑定，默认提示"通过信息验证！"。<BR>           
                     
    如：sucmsg="用户名还未被使用，可以注册！"<BR>5.3版开始，也可以在实时验证返回的json数据里返回成功的提示文字，请查看附加属性ajaxurl的介绍。</LI>
    <LI><STRONG 
    class="orange">errormsg</STRONG><BR>输入内容不能通过验证时的提示信息，默认提示"请输入正确信息！"。<BR>     
                           如：errormsg="用户名必须是2到4位中文字符！"<BR><SPAN 
    class="green">5.3版开始，Validform可以根据你绑定的datatype智能的输出相应出错信息，具体介绍请查看<A href="http://validform.rjboy.cn/document.html#tipmsg">tipmsg</A></SPAN></LI>
    <LI><STRONG 
    class="orange">ignore</STRONG><BR>绑定了ignore="ignore"的表单元素，在有输入时，会验证所填数据是否符合datatype所指定数据类型，<BR>没有填写内容时则会忽略对它的验证；</LI>
    <LI><STRONG 
    class="orange">recheck</STRONG><BR>表单里面经常需要检查两次密码输入是否一致，recheck就是用来指定需要比较的另外一个表单元素。<BR> 
                               
    如：recheck="password1"，那么它就会拿当前元素的值跟该表单下，name为"password1"的元素比较。</LI>
    <LI><STRONG 
    class="orange">tip</STRONG><BR>表单里经常有些文本框需要默认就显示一个灰色的提示文字，当获得焦点时提示文字消失，失去焦点时提示文字显示。tip属性就是用来实现这个效果。它通常和altercss搭配使用。<BR> 
                               如&lt;input type="text" value="默认提示文字" class="gray 
    intxt" tip="默认提示文字" altercss="gray" /&gt;</LI>
    <LI><STRONG 
    class="orange">altercss</STRONG><BR>它需要和tip属性配合使用，altercss指定的样式名，会在文本框获得焦点时被删除，没有输入内容而失去焦点时重新加上。</LI>
    <LI><STRONG class="orange">ajaxurl</STRONG><BR>指定ajax实时验证的后台文件的地址。<BR>
    							后台页面如valid.php文件中可以用 $_POST["param"] 
    接收到值，Ajax中会POST过来变量param和name。param是文本框的值，name是文本框的name属性。<BR>5.2版本开始，可以在ajaxurl指定的url后绑定参数，如：ajaxurl="valid.php?myparam1=value1&amp;myparam2=value2"； 
    <SPAN 
    class="green">5.3.1开始，地址后面附带的参数内部不再做另外解析，仍附带在地址后面，所以需要用GET方式去获取地址后面带的参数。</SPAN><BR>5.3之前的版本中，该文件输出的字符会作为错误信息显示在页面上，如果验证通过需输出小写字母"y"。<BR><SPAN 
    class="green">在5.3版中，实时验证的返回数据做了调整，须是含有status值的json数据！跟callback里的ajax返回数据格式统一，建议不再返回字符串"y"或"n"。目前这两种格式的数据都兼容。</SPAN><BR><SPAN 
    style="color: red;">注： <BR>
    							如果ajax校验通过，会在该元素上绑定validform_valid值为true。可以通过设置该值来控制验证能不能通过，如验证码的验证，第一次验证通过后，不小心右点击了下验证码图片，验证码换了，但是仍然指示这个对象已经通过了验证，这时可以手动调整该值：$("#name")[0].validform_valid="false"。</SPAN><BR>
    							                            怎样设置ajax的参数，具体可以查看Validform对象的<A href="http://validform.rjboy.cn/document.html#config">config</A>方法。 
                               </LI>
    <LI><STRONG class="orange">plugin</STRONG><BR>指定需要使用的插件。<BR><SPAN class="green">5.3版开始，对于日期、swfupload和密码强度检测这三个插件，绑定了plugin属性即可以初始化对应的插件，可以不用在validform初始化时传入空的usePlugin了。</SPAN><BR> 
                               如，你要使用日期插件，5.3之前版本需要这样初始化：<PRE>$(".demoform").Validform({
    usePlugin:{
    	datepicker:{}
    }
});
5.3版开始，不需要传入这些空对象了，只需在表单元素上绑定plugin="datepicker"就可以，初始化直接这样：
$(".demoform").Validform();</PRE></LI></UL></DD>
  <DT><A name="initialize">初始化参数说明</A></DT>
  <DD>
  <P>所有可用参数如下：</P>
  <DIV class="wp_syntax">
  <TABLE>
    <TBODY>
    <TR>
      <TD class="line_numbers"><PRE>1
2

3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
</PRE></TD>
      <TD class="code"><PRE style="font-family: monospace;" class="javascript">$<SPAN style="color: rgb(0, 153, 0);">(</SPAN><SPAN style="color: rgb(51, 102, 204);">".demoform"</SPAN><SPAN style="color: rgb(0, 153, 0);">)</SPAN>.<SPAN style="color: rgb(102, 0, 102);">Validform</SPAN><SPAN style="color: rgb(0, 153, 0);">(</SPAN><SPAN style="color: rgb(0, 153, 0);">{</SPAN><SPAN style="color: rgb(0, 102, 0); font-style: italic;"></SPAN>
	btnSubmit<SPAN style="color: rgb(51, 153, 51);">:</SPAN><SPAN style="color: rgb(51, 102, 204);">"#btn_sub"</SPAN><SPAN style="color: rgb(51, 153, 51);">,</SPAN> 
	btnReset<SPAN style="color: rgb(51, 153, 51);">:</SPAN><SPAN style="color: rgb(51, 102, 204);">".btn_reset"</SPAN><SPAN style="color: rgb(51, 153, 51);">,</SPAN>
	tiptype<SPAN style="color: rgb(51, 153, 51);">:</SPAN><SPAN style="color: rgb(204, 0, 0);">1</SPAN><SPAN style="color: rgb(51, 153, 51);">,</SPAN> 
	ignoreHidden<SPAN style="color: rgb(51, 153, 51);">:</SPAN><SPAN style="color: rgb(0, 51, 102); font-weight: bold;">false</SPAN><SPAN style="color: rgb(51, 153, 51);">,</SPAN>
	dragonfly<SPAN style="color: rgb(51, 153, 51);">:</SPAN><SPAN style="color: rgb(0, 51, 102); font-weight: bold;">false</SPAN><SPAN style="color: rgb(51, 153, 51);">,</SPAN>
	tipSweep<SPAN style="color: rgb(51, 153, 51);">:</SPAN><SPAN style="color: rgb(0, 51, 102); font-weight: bold;">true</SPAN><SPAN style="color: rgb(51, 153, 51);">,</SPAN>
	label<SPAN style="color: rgb(51, 153, 51);">:</SPAN><SPAN style="color: rgb(0, 51, 102); font-weight: bold;">".label"</SPAN><SPAN style="color: rgb(51, 153, 51);">,</SPAN>
	showAllError<SPAN style="color: rgb(51, 153, 51);">:</SPAN><SPAN style="color: rgb(0, 51, 102); font-weight: bold;">false</SPAN><SPAN style="color: rgb(51, 153, 51);">,</SPAN>
	postonce<SPAN style="color: rgb(51, 153, 51);">:</SPAN><SPAN style="color: rgb(0, 51, 102); font-weight: bold;">true</SPAN><SPAN style="color: rgb(51, 153, 51);">,</SPAN>
	ajaxPost<SPAN style="color: rgb(51, 153, 51);">:</SPAN><SPAN style="color: rgb(0, 51, 102); font-weight: bold;">true</SPAN><SPAN style="color: rgb(51, 153, 51);">,</SPAN>
	datatype<SPAN style="color: rgb(51, 153, 51);">:</SPAN><SPAN style="color: rgb(0, 153, 0);">{</SPAN>
		<SPAN style="color: rgb(51, 102, 204);">"*6-20"</SPAN><SPAN style="color: rgb(51, 153, 51);">:</SPAN> <SPAN style="color: rgb(0, 153, 102); font-style: italic;">/^[^\s]{6,20}$/</SPAN><SPAN style="color: rgb(51, 153, 51);">,</SPAN>
		<SPAN style="color: rgb(51, 102, 204);">"z2-4"</SPAN> <SPAN style="color: rgb(51, 153, 51);">:</SPAN> <SPAN style="color: rgb(0, 153, 102); font-style: italic;">/^[\u4E00-\u9FA5\uf900-\ufa2d]{2,4}$/</SPAN><SPAN style="color: rgb(51, 153, 51);">,</SPAN>
		<SPAN style="color: rgb(51, 102, 204);">"username"</SPAN><SPAN style="color: rgb(51, 153, 51);">:</SPAN><SPAN style="color: rgb(0, 51, 102); font-weight: bold;">function</SPAN><SPAN style="color: rgb(0, 153, 0);">(</SPAN>gets<SPAN style="color: rgb(51, 153, 51);">,</SPAN>obj<SPAN style="color: rgb(51, 153, 51);">,</SPAN>curform<SPAN style="color: rgb(51, 153, 51);">,</SPAN>regxp<SPAN style="color: rgb(0, 153, 0);">)</SPAN><SPAN style="color: rgb(0, 153, 0);">{</SPAN>
			<SPAN style="color: rgb(0, 102, 0); font-style: italic;">//参数gets是获取到的表单元素值，obj为当前表单元素，curform为当前验证的表单，regxp为内置的一些正则表达式的引用;</SPAN>
			<SPAN style="color: rgb(0, 51, 102); font-weight: bold;">var</SPAN> reg1<SPAN style="color: rgb(51, 153, 51);">=</SPAN><SPAN style="color: rgb(0, 153, 102); font-style: italic;">/^[\w\.]{4,16}$/</SPAN><SPAN style="color: rgb(51, 153, 51);">,</SPAN>
				reg2<SPAN style="color: rgb(51, 153, 51);">=</SPAN><SPAN style="color: rgb(0, 153, 102); font-style: italic;">/^[\u4E00-\u9FA5\uf900-\ufa2d]{2,8}$/</SPAN><SPAN style="color: rgb(51, 153, 51);">;</SPAN>
&nbsp;
			<SPAN style="color: rgb(0, 0, 102); font-weight: bold;">if</SPAN><SPAN style="color: rgb(0, 153, 0);">(</SPAN>reg1.<SPAN style="color: rgb(102, 0, 102);">test</SPAN><SPAN style="color: rgb(0, 153, 0);">(</SPAN>gets<SPAN style="color: rgb(0, 153, 0);">)</SPAN><SPAN style="color: rgb(0, 153, 0);">)</SPAN><SPAN style="color: rgb(0, 153, 0);">{</SPAN><SPAN style="color: rgb(0, 0, 102); font-weight: bold;">return</SPAN> <SPAN style="color: rgb(0, 51, 102); font-weight: bold;">true</SPAN><SPAN style="color: rgb(51, 153, 51);">;</SPAN><SPAN style="color: rgb(0, 153, 0);">}</SPAN>
			<SPAN style="color: rgb(0, 0, 102); font-weight: bold;">if</SPAN><SPAN style="color: rgb(0, 153, 0);">(</SPAN>reg2.<SPAN style="color: rgb(102, 0, 102);">test</SPAN><SPAN style="color: rgb(0, 153, 0);">(</SPAN>gets<SPAN style="color: rgb(0, 153, 0);">)</SPAN><SPAN style="color: rgb(0, 153, 0);">)</SPAN><SPAN style="color: rgb(0, 153, 0);">{</SPAN><SPAN style="color: rgb(0, 0, 102); font-weight: bold;">return</SPAN> <SPAN style="color: rgb(0, 51, 102); font-weight: bold;">true</SPAN><SPAN style="color: rgb(51, 153, 51);">;</SPAN><SPAN style="color: rgb(0, 153, 0);">}</SPAN>
			<SPAN style="color: rgb(0, 0, 102); font-weight: bold;">return</SPAN> <SPAN style="color: rgb(0, 51, 102); font-weight: bold;">false</SPAN><SPAN style="color: rgb(51, 153, 51);">;</SPAN>
&nbsp;
			<SPAN style="color: rgb(0, 102, 0); font-style: italic;">//注意return可以返回true 或 false 或 字符串文字，true表示验证通过，返回字符串表示验证失败，字符串作为错误提示显示，返回false则用errmsg或默认的错误提示;</SPAN>
		<SPAN style="color: rgb(0, 153, 0);">}</SPAN><SPAN style="color: rgb(51, 153, 51);">,</SPAN>
		<SPAN style="color: rgb(51, 102, 204);">"phone"</SPAN><SPAN style="color: rgb(51, 153, 51);">:</SPAN><SPAN style="color: rgb(0, 51, 102); font-weight: bold;">function</SPAN><SPAN style="color: rgb(0, 153, 0);">(</SPAN><SPAN style="color: rgb(0, 153, 0);">)</SPAN><SPAN style="color: rgb(0, 153, 0);">{</SPAN>
			<SPAN style="color: rgb(0, 102, 0); font-style: italic;">// 5.0 版本之后，要实现二选一的验证效果，datatype 的名称 不 需要以 "option_" 开头;	</SPAN>
		<SPAN style="color: rgb(0, 153, 0);">}</SPAN>
	<SPAN style="color: rgb(0, 153, 0);">}</SPAN><SPAN style="color: rgb(51, 153, 51);">,</SPAN>
	usePlugin<SPAN style="color: rgb(51, 153, 51);">:</SPAN><SPAN style="color: rgb(0, 153, 0);">{</SPAN>
		swfupload<SPAN style="color: rgb(51, 153, 51);">:</SPAN><SPAN style="color: rgb(0, 153, 0);">{</SPAN><SPAN style="color: rgb(0, 153, 0);">}</SPAN><SPAN style="color: rgb(51, 153, 51);">,</SPAN>
		datepicker<SPAN style="color: rgb(51, 153, 51);">:</SPAN><SPAN style="color: rgb(0, 153, 0);">{</SPAN><SPAN style="color: rgb(0, 153, 0);">}</SPAN><SPAN style="color: rgb(51, 153, 51);">,</SPAN>
		passwordstrength<SPAN style="color: rgb(51, 153, 51);">:</SPAN><SPAN style="color: rgb(0, 153, 0);">{</SPAN><SPAN style="color: rgb(0, 153, 0);">}</SPAN><SPAN style="color: rgb(51, 153, 51);">,</SPAN>
		jqtransform<SPAN style="color: rgb(51, 153, 51);">:</SPAN><SPAN style="color: rgb(0, 153, 0);">{</SPAN>
			selector<SPAN style="color: rgb(51, 153, 51);">:</SPAN><SPAN style="color: rgb(51, 102, 204);">"select,input"</SPAN>
		<SPAN style="color: rgb(0, 153, 0);">}</SPAN>
	<SPAN style="color: rgb(0, 153, 0);">}</SPAN><SPAN style="color: rgb(51, 153, 51);">,</SPAN>
	beforeCheck<SPAN style="color: rgb(51, 153, 51);">:</SPAN><SPAN style="color: rgb(0, 51, 102); font-weight: bold;">function</SPAN><SPAN style="color: rgb(0, 153, 0);">(</SPAN>curform<SPAN style="color: rgb(0, 153, 0);">)</SPAN><SPAN style="color: rgb(0, 153, 0);">{</SPAN>
		<SPAN style="color: rgb(0, 102, 0); font-style: italic;">//在表单提交执行验证之前执行的函数，curform参数是当前表单对象。</SPAN>
		<SPAN style="color: rgb(0, 102, 0); font-style: italic;">//这里明确return false的话将不会继续执行验证操作;	</SPAN>
	<SPAN style="color: rgb(0, 153, 0);">}</SPAN><SPAN style="color: rgb(51, 153, 51);">,</SPAN>
	beforeSubmit<SPAN style="color: rgb(51, 153, 51);">:</SPAN><SPAN style="color: rgb(0, 51, 102); font-weight: bold;">function</SPAN><SPAN style="color: rgb(0, 153, 0);">(</SPAN>curform<SPAN style="color: rgb(0, 153, 0);">)</SPAN><SPAN style="color: rgb(0, 153, 0);">{</SPAN>
		<SPAN style="color: rgb(0, 102, 0); font-style: italic;">//在验证成功后，表单提交前执行的函数，curform参数是当前表单对象。</SPAN>
		<SPAN style="color: rgb(0, 102, 0); font-style: italic;">//这里明确return false的话表单将不会提交;	</SPAN>
	<SPAN style="color: rgb(0, 153, 0);">}</SPAN><SPAN style="color: rgb(51, 153, 51);">,</SPAN>
	callback<SPAN style="color: rgb(51, 153, 51);">:</SPAN><SPAN style="color: rgb(0, 51, 102); font-weight: bold;">function</SPAN><SPAN style="color: rgb(0, 153, 0);">(</SPAN>data<SPAN style="color: rgb(0, 153, 0);">)</SPAN><SPAN style="color: rgb(0, 153, 0);">{</SPAN>
		<SPAN style="color: rgb(0, 102, 0); font-style: italic;">//返回数据data是json对象，{"info":"demo info","status":"y"}</SPAN>
		<SPAN style="color: rgb(0, 102, 0); font-style: italic;">//info: 输出提示信息;</SPAN>
		<SPAN style="color: rgb(0, 102, 0); font-style: italic;">//status: 返回提交数据的状态,是否提交成功。如可以用"y"表示提交成功，"n"表示提交失败，在ajax_post.php文件返回数据里自定字符，主要用在callback函数里根据该值执行相应的回调操作;</SPAN>
		<SPAN style="color: rgb(0, 102, 0); font-style: italic;">//你也可以在ajax_post.php文件返回更多信息在这里获取，进行相应操作；</SPAN>
		<SPAN style="color: rgb(0, 102, 0); font-style: italic;">//ajax遇到服务端错误时也会执行回调，这时的data是{ status:**, statusText:**, readyState:**, responseText:** }；</SPAN>
&nbsp;
		<SPAN style="color: rgb(0, 102, 0); font-style: italic;">//这里执行回调操作;</SPAN>
		<SPAN style="color: rgb(0, 102, 0); font-style: italic;">//注意：如果不是ajax方式提交表单，传入callback，这时data参数是当前表单对象，回调函数会在表单验证全部通过后执行，然后判断是否提交表单，如果callback里明确return false，则表单不会提交，如果return true或没有return，则会提交表单。</SPAN>
	<SPAN style="color: rgb(0, 153, 0);">}</SPAN>
<SPAN style="color: rgb(0, 153, 0);">}</SPAN><SPAN style="color: rgb(0, 153, 0);">)</SPAN><SPAN style="color: rgb(51, 153, 51);">;</SPAN>
</PRE></TD></TR></TBODY></TABLE></DIV>
  <H3>参数说明：【所有参数均为可选项】</H3>
  <UL class="lireset2">
    <LI>必须是表单对象执行Validform方法，示例中".demoform"就是绑定在form元素上的class名称；</LI>
    <LI><STRONG 
    class="orange">btnSubmit</STRONG><BR>指定当前表单下的哪一个按钮触发表单提交事件，如果表单下有submit按钮时可以省略该参数。示例中".btn_sub"是该表单下要绑定点击提交表单事件的按钮；</LI>
    <LI><STRONG class="orange">btnReset</STRONG><BR>
    								".btn_reset"是该表单下要绑定点击重置表单事件的按钮;</LI>
    <LI><STRONG class="orange">tiptype</STRONG><A 
    name="tiptype"></A><BR>可用的值有：1、2、3、4和function函数，默认tiptype为1。 <SPAN class="green">3、4是5.2.1版本新增</SPAN><BR>1=&gt; 
    自定义弹出框提示；<BR>2=&gt; 
    侧边提示(会在当前元素的父级的next对象的子级查找显示提示信息的对象，表单以ajax提交时会弹出自定义提示框显示表单提交状态)；<BR>3=&gt; 
    侧边提示(会在当前元素的siblings对象中查找显示提示信息的对象，表单以ajax提交时会弹出自定义提示框显示表单提交状态)；<BR>4=&gt; 
    侧边提示(会在当前元素的父级的next对象下查找显示提示信息的对象，表单以ajax提交时不显示表单的提交状态)；<BR>                 
                   
    如果上面的4种提示方式不是你需要的，你可以给tiptype传入自定义函数。通过自定义函数，可以实现你想要的任何提示效果：<BR><PRE>tiptype:function(msg,o,cssctl){
    //msg：提示信息;
    //o:{obj:*,type:*,curform:*},
    //obj指向的是当前验证的表单元素（或表单对象，验证全部验证通过，提交表单时o.obj为该表单对象），
    //type指示提示的状态，值为1、2、3、4， 1：正在检测/提交数据，2：通过验证，3：验证失败，4：提示ignore状态, 
    //curform为当前form对象;
    //cssctl:内置的提示信息样式控制函数，该函数需传入两个参数：显示提示信息的对象 和 当前提示的状态（既形参o中的type）;
}
具体参见<A href="http://validform.rjboy.cn/demo/demo_tiptype_sideNonePop.html" target="_blank">demo</A>页。</PRE>tiptype不为1时，Validform会查找class为"Validform_checktip"的标签显示提示信息。tiptype=1时，会自动创建弹出框显示提示信息。<BR>Validform_checktip和表单元素之间的位置关系，会根据tiptype的值有对应的结构，上面已经做了说明。<BR><SPAN 
    class="green">5.3版本开始，如果页面里没有显示出错信息的标签，会根据tiptype值自动创建Validform_checktip对象。</SPAN><BR></LI>
    <LI><STRONG class="orange">ignoreHidden</STRONG><BR>可用值： true | false。<BR>
    								默认为false，当为true时对:hidden的表单元素将不做验证;</LI>
    <LI><STRONG class="orange">dragonfly</STRONG><BR>可用值： true | false。<BR>      
                              默认false，当为true时，值为空时不做验证；</LI>
    <LI><STRONG class="orange">tipSweep</STRONG><BR>可用值： true | false。<BR>
    								 默认为false， <SPAN class="green">5.3版中做了修正，在各种tiptype下，</SPAN> 
    为true时提示信息将只会在表单提交时触发显示，各表单元素blur时不会触发信息提示；</LI>
    <LI><STRONG class="orange">label</STRONG> <SUP 
    class="green">5.3.1+</SUP><BR>选择符<BR>                                
    在没有绑定nullmsg时查找要显示的提示文字，默认查找".Validform_label"下的文字；</LI>
    <LI><STRONG class="orange">showAllError</STRONG><BR>可用值： true | false。<BR>   
                                 
    默认为false，true：提交表单时所有错误提示信息都会显示；false：一碰到验证不通过的对象就会停止检测后面的元素，只显示该元素的错误信息；</LI>
    <LI><STRONG class="orange">postonce</STRONG><BR>可用值： true | false。<BR>       
                             默认为false，指定是否开启二次提交防御，true开启，不指定则默认关闭；<BR>
    								为true时，在数据成功提交后，表单将不能再继续提交。                            </LI>
    <LI><STRONG class="orange">ajaxPost</STRONG><BR>可用值： true | false。<BR>       
                             
    默认为false，使用ajax方式提交表单数据，将会把数据POST到config方法或表单action属性里设定的地址；</LI>
    <LI><STRONG 
    class="orange">datatype</STRONG><BR>传入自定义datatype类型，可以是正则，也可以是函数。<BR><PRE>datatyp:{
    "zh2-4":/^[\u4E00-\u9FA5\uf900-\ufa2d]{2,4}$/,
    "phone":function(gets,obj,curform,regxp){
        //参数gets是获取到的表单元素值，
        //obj为当前表单元素，
        //curform为当前验证的表单，
        //regxp为内置的一些正则表达式的引用。
        
        //return false表示验证出错，没有return或者return true表示验证通过。
    }
}</PRE>具体示例请参考<A 
    href="http://validform.rjboy.cn/demo/demo_normal_datatype.html" target="_blank">demo</A>页；</LI>
    <LI><STRONG 
    class="orange">usePlugin</STRONG><BR>目前已整合swfupload、datepicker、passwordstrength和jqtransform四个插件，在这里传入这些插件使用时需要传入的参数。datepicker在Validform内调用时另外扩展了几个比较实用的参数，具体请参考demo页；</LI>
    <LI><STRONG 
    class="orange">beforeCheck(curform)</STRONG><BR>在表单提交执行验证之前执行的函数，curform参数获取到的是当前表单对象。<BR>
    								函数return false的话将不会继续执行验证操作;                            </LI>
    <LI><STRONG 
    class="orange">beforeSubmit(curform)</STRONG><BR>在表单验证通过，提交表单数据之前执行的函数，data参数是当前表单对象。<BR>
    								函数return false的话表单将不会提交;                            </LI>
    <LI><STRONG 
    class="orange">callback</STRONG><BR>在使用ajax提交表单数据时，数据提交后的回调函数。返回数据data是Json对象：<BR>{"info":"demo 
    info","status":"y"}<BR>								info: 输出提示信息，<BR>status: 
    返回提交数据的状态,是否提交成功，"y"表示提交成功，"n"表示提交失败，在ajax_post.php文件返回数据里自定字符，主要用在callback函数里根据该值执行相应的回调操作。你也可以在ajax_post.php文件返回更多信息在这里获取，进行相应操作；<BR>
    								如果不是ajax方式提交表单，传入callback，这时data参数是当前表单对象，回调函数会在表单验证全部通过后执行，然后判断是否提交表单，如果callback里return 
    false，则表单不会提交，如果return true或没有return，则会提交表单。<BR><SPAN 
    class="green">5.3版开始，ajax遇到服务端错误时也会执行回调，这时的data是{ status:**, statusText:**, 
    readyState:**, responseText:** }</SPAN></LI></UL></DD>
  <DT><A name="validformObject">Validform对象<SPAN 
  class="fz12 gray ml10">[方法支持链式调用]</SPAN></A></DT>
  <DD>
  <DIV class="intro">
  <P>如示例 <SPAN class="green">var 
  demo=$(".formsub").Validform()</SPAN>，那么demo对象会有以下属性和方法可以调用：</P></DIV>
  <H3><A name="tipmsg">tipmsg</A><SPAN class="ml10">【object】</SPAN></H3>
  <DIV class="intro">
  <P>如：<SPAN class="gray">demo.tipmsg.s="error! no message inputed.";</SPAN></P>
  <P>通过该对象可以修改除 <SPAN class="green">tit</SPAN> 
  以外的其他提示文字，这样可以实现同一个页面的不同表单使用不同的提示文字。</P><PRE>具体可修改的提示文字
$.Tipmsg={//默认提示文字;
tit:"提示信息",
w:{
    "*":"不能为空！",
    "*6-16":"请填写6到16位任意字符！",
    "n":"请填写数字！",
    "n6-16":"请填写6到16位数字！",
    "s":"不能输入特殊字符！",
    "s6-18":"请填写6到18位字符！",
    "p":"请填写邮政编码！",
    "m":"请填写手机号码！",
    "e":"邮箱地址格式不对！",
    "url":"请填写网址！"
},
def:"请填写正确信息！",
undef:"datatype未定义！",
reck:"两次输入的内容不一致！",
r:"通过信息验证！",
c:"正在检测信息…",
s:"请{填写|选择}{0|信息}！",
v:"所填信息没有经过验证，请稍后…",
p:"正在提交数据…"
};</PRE>
  <P>要修改tit（弹出框的标题文字）的话，可以这样：$.Tipmsg.tit="Message Box"，则弹出框的标题文字会换成"Message 
  Box"</P>
  <P class="green">注：<SUP>5.3.2+</SUP><BR>
  								$.Tipmsg.w里，形如"*6-16"的提示文字，里面的数字是会被替换的。如绑定datatype="*2-18"，那它默认的出错信息就会是"请填写2到18位任意字符！"，<SPAN 
  class="red">可以通过$.Tipmsg.w或Validform对象的tipmsg属性修改和扩展默认错误信息，如果你已经设置了"zh2-4"的提示信息是"2-4位中文",那么"zh2-8"出错的信息就自动会是："2-8位中文"。对于自定义的datatype，在扩展默认信息时，注意错误信息的名字要跟datatype名字一样，如上面示例是：$.Tipmsg.w["zh2-4"]="2-4位中文"。对于多页面或一个页面多表单有相同datatype来说，在$.Tipmsg.w或Validform对象的tipmsg属性中扩展默认提示信息是个很好的选择。</SPAN><BR>5.3.1+ 
  <BR>
  								$.Tipmsg.s是用来指定在没有绑定nullmsg时的默认提示信息。"{0}"是会被找到的label参数指定的对象或Validform_label里的文字替换掉的，"{填写|选择}"里的文字在绑定了"recheck"属性的表单元素上检测时是会不显示的，当前验证对象是radio、checkbox或select时，会输出"选择"，是其他类型的元素时会输出"填写"和后面的"信息"。<BR></P>
  <P class="green mt10">具体示例请参见<A href="http://validform.rjboy.cn/demo/demo_normal_autotip.html" 
  target="_blank">demo</A>页。</P></DIV>
  <H3><A name="dataType">dataType</A><SPAN class="ml10">【object】</SPAN></H3>
  <DIV class="intro">
  <P>获取内置的一些正则：</P><PRE>{
    "match":/^(.+?)(\d+)-(\d+)$/,
    "*":/[\w\W]+/,
    "*6-16":/^[\w\W]{6,16}$/,
    "n":/^\d+$/,
    "n6-16":/^\d{6,16}$/,
    "s":/^[\u4E00-\u9FA5\uf900-\ufa2d\w\.\s]+$/,
    "s6-18":/^[\u4E00-\u9FA5\uf900-\ufa2d\w\.\s]{6,18}$/,
    "p":/^[0-9]{6}$/,
    "m":/^13[0-9]{9}$|14[0-9]{9}|15[0-9]{9}$|18[0-9]{9}$/,
    "e":/^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
    "url":/^(\w+:\/\/)?\w+(\.\w+)+.*$/
}</PRE></DIV>
  <H3><A name="addRule">addRule(rule)</A><SPAN 
  class="ml10">【返回值：Validform】</SPAN></H3>
  <DIV class="intro">
  <P>可以通过Validform对象的这个方法来给表单元素绑定验证规则，<A href="http://validform.rjboy.cn/document.html#bindtype">绑定验证类型</A>中列出的附加属性都可以通过这个方法绑定。</P><PRE>demo.addRule([
    {
        ele:"#name",
        datatype:"s6-18",
        ajaxurl:"valid.php",
        nullmsg:"请输入昵称！",
        errormsg:"昵称至少6个字符,最多18个字符！"
    },
    {
        ele:"#userpassword",
        datatype:"*6-16",
        nullmsg:"请设置密码！",
        errormsg:"密码范围在6~16位之间！"
    },
    {
        ele:"#userpassword2",
        datatype:"*",
        recheck:"userpassword",
        nullmsg:"请再输入一次密码！",
        errormsg:"您两次输入的账号密码不一致！"
    }
]);</PRE>
  <P>其中ele是指定要绑定规则的对象，会在Validform对象下查找这些对象。</P></DIV>
  <H3><A name="eq">eq(n)</A><SPAN class="ml10">【返回值：Validform】</SPAN></H3>
  <DIV class="intro">
  <P>获取Validform对象的第n个元素。</P>
  <P>如你页面上有多个form的class都是formsub，执行上面的验证绑定，得到的demo对象就可以操作所有这些表单，如果你要对其中某个表单执行某些操作，那么就可以使用这个方法。</P>
  <P>如demo.eq(0).resetForm()，重置第一个表单。</P></DIV>
  <H3><A name="ajaxPost">ajaxPost(flag,sync,url)</A><SPAN 
  class="ml10">【返回值：Validform】</SPAN></H3>
  <DIV class="intro">
  <P>以ajax方式提交表单。flag为true时，跳过验证直接提交，sync为true时将以同步的方式进行ajax提交。</P>
  <P class="green">参数url是5.3版新增，传入了url地址时，表单会提交到这个地址</P>
  <P>如demo.ajaxPost(true)，不做验证直接ajax提交表单。</P></DIV>
  <H3><A name="abort">abort()</A><SPAN class="ml10">【返回值：Validform】</SPAN></H3>
  <DIV class="intro">
  <P>终止ajax的提交。</P>
  <P>如执行上面的ajaxPost()之后，发现某些项填写不对，想取消表单提交，那么就可以执行这个操作：demo.abort()</P></DIV>
  <H3><A name="submitForm">submitForm(flag,url)</A><SPAN 
  class="ml10">【返回值：Validform】</SPAN></H3>
  <DIV class="intro">
  <P>以初始化时传入参数的设置方式提交表单，flag为true时，跳过验证直接提交。</P>
  <P class="green">参数url是5.3版新增，传入了url地址时，表单会提交到这个地址</P>
  <P>如demo.submitForm(true)，不做验证直接提交表单。</P></DIV>
  <H3><A name="resetForm">resetForm()</A><SPAN 
  class="ml10">【返回值：Validform】</SPAN></H3>
  <DIV class="intro">
  <P>重置表单。</P>
  <P>如demo.resetForm()，重置表单到初始状态。</P></DIV>
  <H3><A name="resetStatus">resetStatus()</A><SPAN 
  class="ml10">【返回值：Validform】</SPAN></H3>
  <DIV class="intro">
  <P>重置表单的提交状态。传入了postonce参数的话，表单成功提交后状态会设置为"posted"，重置提交状态可以让表单继续可以提交。</P>
  <P>如demo.resetStatus()</P></DIV>
  <H3><A name="getStatus">getStatus()</A><SPAN 
  class="ml10">【返回值：String】</SPAN></H3>
  <DIV class="intro">
  <P>获取表单的提交状态，normal：未提交，posting：正在提交，posted：已成功提交过。</P>
  <P>如demo.getStatus()</P></DIV>
  <H3><A name="setStatus">setStatus(status)</A><SPAN 
  class="ml10">【返回值：Validform】</SPAN></H3>
  <DIV class="intro">
  <P>设置表单的提交状态，可以设置normal，posting，posted三种状态，不传参则设置状态为posting，这个状态表单可以验证，但不能提交。</P>
  <P>如demo.setStatus("posted")</P></DIV>
  <H3><A name="ignore">ignore(selector)</A><SPAN 
  class="ml10">【返回值：Validform】</SPAN></H3>
  <DIV class="intro">
  <P>忽略对所选择对象的验证，不传入selector则忽略所有表单元素。</P>
  <P>如demo.ignore("select,textarea,#name")，忽略Validform对象下所有select，textarea及一个id为"name"元素的验证。</P></DIV>
  <H3><A name="unignore">unignore(selector)</A><SPAN 
  class="ml10">【返回值：Validform】</SPAN></H3>
  <DIV class="intro">
  <P>将ignore方法所忽略验证的对象重新获取验证效果，不传入selector则恢复验证所有表单元素。</P>
  <P>如demo.unignore("select,textarea,#name")，恢复Validform对象下所有select，textarea及一个id为"name"元素的验证。</P></DIV>
  <H3><A name="check">check(bool,selector)</A><SPAN 
  class="ml10">【返回值：Boolean】</SPAN></H3>
  <DIV class="intro">
  <P>bool为true时则只验证不显示提示信息</P>
  <P>对指定对象进行验证(默认验证当前整个表单)，通过返回true，否则返回false（绑定实时验证的对象，格式符合要求时返回true，而不会等ajax的返回结果）</P>
  <P>如demo.check()，验证当前整个表单，且只验证但不显示对错信息。</P></DIV>
  <H3><A name="config">config(setup)</A> <SUP class="green">5.3+</SUP> <SPAN 
  class="ml10">【返回值：Validform】</SPAN></H3>
  <DIV class="intro">
  <P>setup参数是一个对象。</P><PRE>如:
demo.config({
    showAllError:true,
    url:"这里指定提交地址",
    ajaxpost:{
        //可以传入$.ajax()能使用的，除dataType外的所有参数;
    },
    ajaxurl:{
        //可以传入$.ajax()能使用的，除dataType外的所有参数;
    }
})

<STRONG>可用参数：</STRONG>
<SPAN class="orange">tiptype等</SPAN> <SUP class="green">5.3.2+</SUP>：可以在这里设置初始化可用的所有参数
<SPAN class="orange">url</SPAN>：指定表单的提交路径，这里指定的路径会覆盖表单action属性所指定的路径
<SPAN class="orange">ajaxpost</SPAN>：表单以ajax提交时，可以在这里配置ajax的参数
<SPAN class="orange">ajaxurl</SPAN>：配置实时验证ajax的参数

①、config方法还能为已经初始化过的表单重新配置参数了！<SUP class="green">5.3.2+</SUP>
如var demo=$(".formsub").Validform(); 
demo.config({tiptype:2});
demo下的各表单还能分别配置不同参数！
如demo.eq(0).config({tiptype:1,ajaxPost:true});
demo.eq(1).config({tiptype:1,callback:function(curform){my_method_to_submit_form(); return false;}});

②、执行config可以动态设置、添加参数，如：
demo.config({
    url:"http://validform.rjboy.cn"
});
$(".save").click(function(){
    demo.config({
        ajaxpost:{
            timeout:1000
        }
    });
});
那么在点击save按钮后，demo所对应的表单的config={
    url:"http://validform.rjboy.cn",
    ajaxpost:{
        timeout:1000
    }
}
③、参数url的优先级：form表单的action所指定的提交地址会被config.url覆盖，
config.url会被config.ajaxpost.url覆盖，config.ajaxpost.url会被Validform对象的方法submitForm(flag,url)
和ajaxPost(flag,sync,url)里的url覆盖。
如果表单里没有指定action提交地址，那么就会提交到config.url设定的地址。
考虑到整个验证框架的逻辑，传入dataType参数不会起作用，不会被覆盖，ajax必须返回含有status值的json数据。

④、另外注意的是：传入的success和error方法里，能多获取到一个参数，如：
demo.config={
    ajaxpost:{
    	url:"",
        timeout:1000,
        ...,
        success:function(data,obj){
            //data是返回的json数据;
            //obj是当前表单的jquery对象;
        },
        error:function(data,obj){
            //data是{ status:**, statusText:**, readyState:**, responseText:** };
            //obj是当前表单的jquery对象;
        }
    },
    ajaxurl:{
        success:function(data,obj){
            //data是返回的json数据;
            //obj是当前正做实时验证表单元素的jquery对象;
            //注意：5.3版中，实时验证的返回数据须是含有status值的json数据！
            //跟callback里的ajax返回数据格式统一，建议不再返回字符串"y"或"n"。目前这两种格式的数据都兼容。
        }
    }
}
</PRE></DIV></DD>
  <DT><A name="plugin">调用外部插件</A></DT>
  <DD>
  <H3><A name="swfupload">文件上传 - swfupload</A></H3>
  <DIV class="intro">
  <P><A class="green" href="http://validform.rjboy.cn/demo/demo_usePlugin_uploadAtOnce.html" 
  target="_blank">选择文件后立即上传</A></P>
  <P><A class="green" href="http://validform.rjboy.cn/demo/demo_usePlugin_uploadWhenValid.html" 
  target="_blank">表单验证通过后上传文件</A></P></DIV>
  <H3><A name="passwordStrength">密码强度检测 - passwordStrength</A></H3>
  <DIV class="intro">
  <P><A class="green" href="http://validform.rjboy.cn/demo/demo_usePlugin_strengthAlways.html" 
  target="_blank">密码强度提示与验证提示同时显示</A></P>
  <P><A class="green" href="http://validform.rjboy.cn/demo/demo_usePlugin_strengthNeeded.html" 
  target="_blank">在符合验证要求时才有密码强度提示</A></P></DIV>
  <H3><A name="datePicker">日期控件 - datePicker</A></H3>
  <DIV class="intro">
  <P><A class="green" href="http://validform.rjboy.cn/demo/demo_usePlugin_datePickerDefault.html" 
  target="_blank">默认效果</A></P>
  <P><A class="green" href="http://validform.rjboy.cn/demo/demo_usePlugin_datePickerCallback.html" 
  target="_blank">选择日期后执行回调函数</A></P></DIV>
  <H3><A name="jqtransform">表单美化 - jqtransform</A></H3>
  <DIV class="intro">
  <P><A class="green" href="http://validform.rjboy.cn/demo/demo_usePlugin_jqtransformDefault.html" 
  target="_blank">默认对所有元素美化</A></P>
  <P><A class="green" href="http://validform.rjboy.cn/demo/demo_usePlugin_jqtransformAssign.html" 
  target="_blank">美化指定的表单元素</A></P></DIV></DD>
  <DT><A name="validformjquery">Validform的公用对象</A></DT>
  <DD>
  <H3><A name="Datatype">$.Datatype</A></H3>
  <DIV class="intro">
  <P>可以通过$.Datatype对象来扩展datatype类型。</P>
  <P>如$.Datatype.zh=/^[\u4E00-\u9FA5\uf900-\ufa2d]{1,}$/</P></DIV>
  <H3><A name="Tipmsg">$.Tipmsg</A></H3>
  <DIV class="intro">
  <P>可以通过$.Tipmsg对象来修改默认提示文字。具体可修改的提示文字请查看Validform对象的tipmsg属性。</P>
  <P>如果Validform对象的tipmsg属性没有找到相关的提示信息，那么就会到$.Tipmsg中查找对应提示文字。</P>
  <P>如$.Tipmsg.tit="msg box"; //设置默认弹出框的标题文字。</P></DIV>
  <H3><A name="Showmsg">$.Showmsg(msg)</A></H3>
  <DIV class="intro">
  <P>调用Validform自定义的弹出框。</P>
  <P>参数msg是要显示的提示文字。</P>
  <P>如$.Showmsg("这是提示文字"); //如果不传入信息则不会有弹出框出现，像$.Showmsg()这样是不会弹出提示框的。</P></DIV>
  <H3><A name="Hidemsg">$.Hidemsg()</A></H3>
  <DIV class="intro">
  <P>关闭Validform自定义的弹出框。</P>
  <P>如$.Hidemsg()</P></DIV></DD></DL></DIV>
<DIV class="sidenav fl">
<H3>Validform v5.3.2 文档</H3>
<UL style="padding-left: 10px;" class="lireset2">
  <LI><A 
  href="http://validform.rjboy.cn/document.html#getstart">Validform使用入门</A></LI>
  <LI><A href="http://validform.rjboy.cn/document.html#bindtype">绑定附加属性</A></LI>
  <LI><A 
  href="http://validform.rjboy.cn/document.html#initialize">初始化参数说明</A></LI></UL>
<UL style="padding-left: 10px;" class="lireset">
  <LI class="expand"><A href="http://validform.rjboy.cn/document.html#validformObject">Validform对象</A>
  <UL style="display: block;" class="lireset2">
    <LI><A href="http://validform.rjboy.cn/document.html#tipmsg">tipmsg</A></LI>
    <LI><A 
    href="http://validform.rjboy.cn/document.html#dataType">dataType</A></LI>
    <LI><A 
    href="http://validform.rjboy.cn/document.html#addRule">addRule(rule)</A></LI>
    <LI><A href="http://validform.rjboy.cn/document.html#eq">eq(n)</A></LI>
    <LI><A 
    href="http://validform.rjboy.cn/document.html#ajaxPost">ajaxPost(flag,sync,url)</A></LI>
    <LI><A href="http://validform.rjboy.cn/document.html#abort">abort()</A></LI>
    <LI><A 
    href="http://validform.rjboy.cn/document.html#submitForm">submitForm(flag,url)</A></LI>
    <LI><A 
    href="http://validform.rjboy.cn/document.html#resetForm">resetForm()</A></LI>
    <LI><A 
    href="http://validform.rjboy.cn/document.html#resetStatus">resetStatus()</A></LI>
    <LI><A 
    href="http://validform.rjboy.cn/document.html#getStatus">getStatus()</A></LI>
    <LI><A 
    href="http://validform.rjboy.cn/document.html#setStatus">setStatus(status)</A></LI>
    <LI><A 
    href="http://validform.rjboy.cn/document.html#ignore">ignore(selector)</A></LI>
    <LI><A 
    href="http://validform.rjboy.cn/document.html#unignore">unignore(selector)</A></LI>
    <LI><A 
    href="http://validform.rjboy.cn/document.html#check">check(bool,selector)</A></LI>
    <LI><A 
    href="http://validform.rjboy.cn/document.html#config">config(setup)</A></LI></UL></LI>
  <LI class="expand"><A 
  href="http://validform.rjboy.cn/document.html#plugin">调用外部插件</A>
  <UL class="lireset2">
    <LI><A href="http://validform.rjboy.cn/document.html#swfupload">文件上传 - 
    swfupload</A></LI>
    <LI><A 
    href="http://validform.rjboy.cn/document.html#passwordStrength">密码强度检测 - 
    passwordStrength</A></LI>
    <LI><A href="http://validform.rjboy.cn/document.html#datePicker">日期控件 - 
    datePicker</A></LI>
    <LI><A href="http://validform.rjboy.cn/document.html#jqtransform">表单美化 - 
    jqtransform</A></LI></UL></LI>
  <LI class="expand"><A href="http://validform.rjboy.cn/document.html#validformjquery">Validform的公用对象</A>
  <UL class="lireset2">
    <LI><A 
    href="http://validform.rjboy.cn/document.html#Datatype">$.Datatype</A></LI>
    <LI><A 
    href="http://validform.rjboy.cn/document.html#Tipmsg">$.Tipmsg</A></LI>
    <LI><A 
    href="http://validform.rjboy.cn/document.html#Showmsg">$.Showmsg(msg)</A></LI>
    <LI><A 
    href="http://validform.rjboy.cn/document.html#Hidemsg">$.Hidemsg</A></LI></UL></LI></UL></DIV></DIV></DIV>
</DIV>
<DIV class="footer">
<DIV class="wraper">
<P class="fl">Copyright © <A href="http://www.eloocor.com/" 
target="_blank">易罗客</A></P>
<P class="fr"><A href="http://www.rjboy.cn/" target="_blank">瑞金佬的前端路</A><B> | 
</B><A href="http://validform.rjboy.cn/">Validform</A><B> | </B><A href="http://www.rjboy.cn/?p=789" 
target="_blank">hScrollpane</A><B> | </B><A href="http://www.rjboy.cn/?p=708" 
target="_blank">Xslider</A></P></DIV></DIV><A class="toTop" href="http://validform.rjboy.cn/document.html###">回顶部</A>
<SCRIPT type="text/javascript" src="doc_API_Validform_files/jquery-1.6.2.min.js"></SCRIPT>

<SCRIPT type="text/javascript">
$(function(){
	var sidenav=$(".sidenav").css({position:"relative"});
	var offsetTop=sidenav.offset().top;
	var top=document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop;
	top=top>offsetTop ? top-offsetTop+10 : 0;
	sidenav.animate({
		top:top	
	},{queue:false,duration:300});
	
	$(window).bind("scroll resize",function(){
		top=document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop;
		if(top>50){
			$(".toTop").fadeIn(300);		
		}else{
			$(".toTop").fadeOut(400);
		}
		
		top=top>offsetTop ? top-offsetTop+10 : 0;
		
		sidenav.animate({
			top:top	
		},{queue:false,duration:300});	
	});	
	
	$(".sidenav .expand>a").click(function(){
		$(this).siblings("ul").show().parents(".expand").siblings(".expand").find("ul").hide();;
	});
	$(".sidenav .expand li a").click(function(){
		$(this).parents(".expand").siblings(".expand").find("ul").hide();
	});
	
	//back to the top;
    $(".toTop").click(function () {
        $($.browser.safari || document.compatMode == 'BackCompat' ? document.body : document.documentElement).animate({
            scrollTop: 0
        }, 200);
        return false;
    });
})
</SCRIPT>

<SCRIPT type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</SCRIPT>

<SCRIPT type="text/javascript">
try{
var pageTracker = _gat._getTracker("UA-2920412-3");
pageTracker._trackPageview();
} catch(err) {}</SCRIPT>
</BODY></HTML>
